package ar.com.binarit

import ar.com.binarit.entities.Equipo
import ar.com.binarit.entities.Evento
import ar.com.binarit.entities.ParametrosSistema
import ar.com.binarit.util.DateUtil

class AbstractController {
	
	def personService
	def viajeService
	def springSecurityService
	def grailsApplication
	def mailService
	
    def llenarDatosViaje(params, initial) {
		log.warn "llenarDatosViaje - initial: " + initial + " params: " + params

		def viajeInstance = viajeService.obtenerViaje(params.id)
		
		if (params.fechaSalida) {
			params.horaSalida = params.horaSalida.toString().padLeft(2, '0')
			params.minutoSalida = params.minutoSalida.toString().padLeft(2, '0')
			
			Calendar cal = Calendar.getInstance()
			cal.setTime(DateUtil.toDate(params.fechaSalida))
			cal.set(Calendar.HOUR_OF_DAY,params.horaSalida.toInteger())
			cal.set(Calendar.MINUTE,params.minutoSalida.toInteger())
			params.fechaSalida =  cal.getTime()
			params.fechaRetorno =  cal.getTime()
			params.fechaFinalizacion =  cal.getTime()
		}
		viajeInstance.properties = params
		
		if (initial){
			if (params.precioAsiento){
				viajeInstance.precioAsiento = new BigDecimal(params?.precioAsiento)
			}
		}
		
		if (springSecurityService.isLoggedIn() && initial){
			viajeInstance.usuarioCreador = usuarioLogueado
		}
		return viajeInstance
	}
	
	def getParametrosSistema(){
		return ParametrosSistema.first()
	}
	
	def getMapaDatos(viajeInstance){
		return [usuarioLogueado : usuarioLogueado]
	}
	
	def mostrarResultados(ok, mensajeOk, viajeInstance) {
		def modelView = [viajeInstance: viajeInstance]
		modelView.putAll(getMapaDatos(viajeInstance))
		log.warn "mostarResultados: ${params}"
		if (ok) {
//			flash.message = mensajeOk
			redirect(controller: "viajes", action: "show", id:viajeInstance.id)
		} else {
			render(view: "index", model: modelView)
		}
	}
	
	def actualizarNavBar(){
		render (template: "/templates/mainHeader", model: [persona: springSecurityService.currentUser])
	}
	
	def getUsuarioLogueado(){
		personService.usuarioLogueado
	}
	
	def getEventosActivos(){
		return viajeService.obtenerEventosActivos()
	}
	
	def getEquipos(){
		return Equipo.list().sort{it.nombre}
	}
	
}
